import Http from "../../utils/http"

// pages/cart/cart.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    cartList:[],
    isShow:false,
    startX:0,
    isAllSelected:false,
    totalPrice:"0.00"
  },
  //点击数量减
  async decrementFn(e){
    // console.log(e);
    let id=e.currentTarget.dataset.id;
    //找到点击的那一项的索引
    let idx=this.data.cartList.findIndex(item=>item.id==id)
    //判断 如果减数减到0时
    if(this.data.cartList[idx].num-1<=0){
      wx.showToast({
        title: '购物车商品数量至少为1',
        icon:"none"
      })
    }else{
      //向后端发送请求
      await Http({
        url:"/cart/add",
        method:"post",
        dataObj:{
          num:-1,
          id
        }
      });
      //更新页面
      this.data.cartList[idx].num-=1;
      this.setData({
        cartList:this.data.cartList
      })
      //调用统计方法
      this.calcTotalFn();
    } 
  },
  //点击数量加
  async incrementFn(e){
    let id=e.currentTarget.dataset.id;
    //发送请求给后端
    await Http({
      url:"/cart/add",
      method:"post",
      dataObj:{
        num:1,
        id
      }
    });
    //同步更新前端视图
    let idx=this.data.cartList.findIndex(item=>item.id==id);
    this.data.cartList[idx].num+=1;
    this.setData({
      cartList:this.data.cartList
    })

    //调用统计方法
    this.calcTotalFn();
  },
  //点击单个选中或不选中
  async selectedFn(e){
    console.log(e,"iiii");
    let id=e.currentTarget.dataset.id;
    //控制选中不选中
    let bool=e.currentTarget.dataset.selected;

    await Http({
      url:"/cart/selected",
      method:"post",
      dataObj:{
        id,
        selected:!bool
      }
    });
    //更新前端视图
    let idx=this.data.cartList.findIndex(item=>item.id==id);
    this.data.cartList[idx].selected=!bool;
    this.setData({
      cartList:this.data.cartList
    })
    // this.setData({
    //   isAllSelected:this.data.cartList.every(item=>item.selected)
    // })
    
     //调用统计方法
     this.calcTotalFn();
  },

  //点击删除按钮删除
  async delFn(e){
    let id=e.currentTarget.dataset.id
    let data = await Http({
      url:"/cart/delete",
      method:"post",
      dataObj:{
        id
      }
    });
    console.log(data);  //会打印出更新后的数据
    //更新视图
    this.setData({
      cartList:data.list
    })

    //调用统计方法
    this.calcTotalFn();
  },

  //全选按钮
  async allSelectedFn(){
    this.data.isAllSelected=!this.data.isAllSelected
    await Http({
      url:"/cart/allselected",
      method:"post",
      dataObj:{
        selected:this.data.isAllSelected
      }
    });
    //当前选中的状态  页面立即发生更新
    this.data.cartList.forEach(item=>{
      item.selected=this.data.isAllSelected
    })
    this.setData({
      cartList:this.data.cartList,
      isAllSelected:this.data.isAllSelected
    })

     //调用统计方法
     this.calcTotalFn();
  },


  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: async function () {
    let data = await Http({
      headers:{
        openid:wx.getStorageSync("openid"),
        session_key:wx.getStorageSync("session_key")
      },
      url:"/cart/list",
      method:"post"
    })
    console.log("购物车打印",data);
    if(data.msg=="抱歉您没有权限,请您登陆授权"){
      wx.showToast({
        icon:"none",
        title: data.msg,
      })
      //延迟三秒 去登录
      setTimeout(() => {
        wx.switchTab({
          url:"/pages/about/about"
        })
      }, 3000);
    }else{
      this.setData({
        cartList:data.list
      })
      //调用统计方法
      this.calcTotalFn();
    }
  },

  //统计的函数
  calcTotalFn(){
    //统计
    let totalPrice=0;
    this.data.cartList.filter(item=>item.selected).forEach(item=>{
      if(item.price.indexOf("-")!=-1){
        item.price=item.price.split("-")[0];
        totalPrice+=item.price*item.num;
      }else{
        totalPrice+=item.price*item.num;
      }
      console.log(item.price);
    })
    this.setData({
      isAllSelected:this.data.cartList.every(item=>item.selected),
      totalPrice:totalPrice.toFixed(2)
    })
  },
  //手指按下时触发
  startFn(e){
    // console.log(e);
    this.setData({
      startX:e.touches[0].clientX
    })
  },
  //手指移动时触发
  moveFn(e){
    // console.log(e,"移动");
    let idx=e.currentTarget.dataset.idx;
    let moveX=e.touches[0].clientX;
    // 差值 = 移动的x位置 - 按下时的x位置
    let cha=moveX-this.data.startX;
    //判断差值小于0 （向左滑）
    if(cha<0 && Math.abs(cha)>100){
      //让滑块进来
      this.data.cartList[idx].isShow=true;
      this.setData({
        cartList:this.data.cartList
      })
    }else if(cha>0&&Math.abs(cha)>100){
      //让滑块退出去
      this.data.cartList[idx].isShow=false;
      this.setData({
        cartList:this.data.cartList
      })
    }
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})